LINQ এর মাধ্যমে ডুপ্লিকেট ডেটা ফিল্টার করা

Microsoft Technologies - লিংক (LinQ) LINQ এ সেট অপারেশন (Set Operations in LINQ) |
167
167

LINQ ব্যবহার করে ডুপ্লিকেট ডেটা ফিল্টার করা বা অপসারণ করা খুবই সহজ। এর জন্য Distinct() মেথডটি ব্যবহার করা হয়। এই মেথডটি একটি সংগ্রহের মধ্যে থেকে শুধুমাত্র ইউনিক (অব্যক্ত) মানগুলি ফিরিয়ে আনে, অর্থাৎ যেসব মান একাধিকবার রয়েছে, সেগুলো শুধুমাত্র একবার প্রদর্শিত হবে।


Distinct() মেথড ব্যবহার (Method Syntax)

Distinct() মেথড একটি সংগ্রহ বা সিকোয়েন্স থেকে ডুপ্লিকেট উপাদানগুলো সরিয়ে ফেলতে সাহায্য করে। এটি method syntax এর মাধ্যমে ব্যবহার করা হয়, যেমন:

উদাহরণ:

List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 1, 2, 6, 7, 3 };

// Distinct() ব্যবহার করে ডুপ্লিকেট অপসারণ করা
var distinctNumbers = numbers.Distinct();

foreach (var number in distinctNumbers)
{
    Console.WriteLine(number);  // Output: 1, 2, 3, 4, 5, 6, 7
}

এখানে, Distinct() মেথড ব্যবহার করে numbers লিস্ট থেকে ডুপ্লিকেট সংখ্যা গুলো সরিয়ে দেয়া হয়েছে।


Distinct() ব্যবহার (Query Syntax)

Query syntax ব্যবহার করে Distinct() মেথড ব্যবহার করতে হলে আপনি distinct কিওয়ার্ড ব্যবহার করবেন, যেমন:

উদাহরণ:

List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 1, 2, 6, 7, 3 };

// Distinct() ব্যবহার করে ডুপ্লিকেট অপসারণ করা (Query Syntax)
var distinctNumbers = from num in numbers
                      select num;
                      
foreach (var number in distinctNumbers.Distinct())
{
    Console.WriteLine(number);  // Output: 1, 2, 3, 4, 5, 6, 7
}

এখানে, distinct কিওয়ার্ড ব্যবহার করে লিস্ট থেকে ডুপ্লিকেট মানগুলি সরিয়ে দেয়া হয়েছে।


কাস্টম অবজেক্টের জন্য Distinct()

যদি আপনার ডেটা একটি কাস্টম অবজেক্টের লিস্ট হয় (যেমন একটি Person ক্লাস), এবং আপনি চান যে একাধিক কাস্টম অবজেক্টের মধ্যে যদি কোন প্রপার্টি বা ক্ষেত্রের মান সমান হয়, তবে তা ডুপ্লিকেট হিসেবে গণ্য হবে, তাহলে Distinct() ব্যবহারের জন্য IEqualityComparer ইন্টারফেসটি ব্যবহার করতে হয়।

উদাহরণ:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

List<Person> people = new List<Person>
{
    new Person { Name = "Alice", Age = 30 },
    new Person { Name = "Bob", Age = 25 },
    new Person { Name = "Alice", Age = 30 },
    new Person { Name = "Charlie", Age = 35 }
};

// Custom Distinct (Name এবং Age এর ভিত্তিতে)
var distinctPeople = people.Distinct(new PersonComparer());

foreach (var person in distinctPeople)
{
    Console.WriteLine($"{person.Name}, {person.Age}");
}

// Custom IEqualityComparer
public class PersonComparer : IEqualityComparer<Person>
{
    public bool Equals(Person x, Person y)
    {
        if (x == null || y == null)
            return false;

        return x.Name == y.Name && x.Age == y.Age;
    }

    public int GetHashCode(Person obj)
    {
        return obj.Name.GetHashCode() ^ obj.Age.GetHashCode();
    }
}

এখানে:

  • PersonComparer একটি কাস্টম IEqualityComparer ক্লাস যা Name এবং Age এর ভিত্তিতে দুইটি Person অবজেক্টের সমানতা পরীক্ষা করে।
  • Distinct() মেথড এই কাস্টম কম্পেয়ারার ব্যবহার করে ডুপ্লিকেট Person অবজেক্টগুলো সরিয়ে ফেলছে।

আউটপুট:

Alice, 30
Bob, 25
Charlie, 35

এখানে, একই নাম এবং বয়সের দুটি Person অবজেক্টকে ডুপ্লিকেট হিসেবে ধরা হয়েছে এবং শুধুমাত্র একবার প্রদর্শন করা হয়েছে।


Distinct() মেথডের সীমাবদ্ধতা

  • Primitive Types: Distinct() মেথডটি শুধুমাত্র সাদামাটা (primitive) ধরনের ডেটার জন্য কাজ করে, যেমন int, string, float ইত্যাদি।
  • Custom Types: কাস্টম অবজেক্টের জন্য Distinct() কাজ করবে না যদি না আপনি IEqualityComparer ইন্টারফেস প্রয়োগ না করেন, কারণ LINQ ডুপ্লিকেট চেক করতে অবজেক্টের সমানতা নির্ধারণের জন্য একটি কাস্টম তুলনা প্রয়োজন।

সারাংশ

LINQ এর Distinct() মেথড ব্যবহার করে ডুপ্লিকেট ডেটা সহজে ফিল্টার করা সম্ভব। এটি List, Array, বা যে কোন আইটেমের সিকোয়েন্সের মধ্যে ডুপ্লিকেট উপাদান সরিয়ে ফেলতে সাহায্য করে। কাস্টম অবজেক্টের জন্য IEqualityComparer প্রয়োগের মাধ্যমে ডুপ্লিকেট চেক করা যায়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion